package concurrent.countDownLatch;

import org.junit.Test;

import java.util.concurrent.CountDownLatch;

/**
 * 假设一个自习室里有7个人，其中有一个是班长，班长的主要职责就是在其它6个同学走了后，关灯，锁教室门，然后走人，
 * 因此班长是需要最后一个走的，那么有什么方法能够控制班长这个线程是最后一个执行，而其它线程是随机执行的
 */
public class CountDownLatchTest {

	@Test
	public void test() throws InterruptedException {

		CountDownLatch countDownLatch = new CountDownLatch(7);

		for (int i = 0; i < 7; i++) {
			new Thread(() -> {
				System.out.println(Thread.currentThread().getName() + "离开教室");
				countDownLatch.countDown();
			}, "同学" + i).start();
		}

		countDownLatch.await();
		System.out.println(Thread.currentThread().getName() + "班长关门");

	}

}
